k = int(input())
info = input().split()
nums = []
for i in range(k):
    nums.append(list(map(int,info[i].split(','))))
a = int(input())

# pre:  输入到i节点的包数【第一次输入到i节点的包数，第二次输入到i节点的包数】
# cap：i处的传输能力,【最大发送量，最大存储量】
# return: 计算从第i节点输出的最少包数量 [i节点第一次发出的包数，i节点第二次发出的包数】
def cal(pre,cap):
    res1 = min(pre[0],cap[0])
    stor = min(cap[1],pre[0]-cap[0] if pre[0]>cap[0] else 0) #第一次转发后存储下来的包
    res2 = min(pre[1]+stor,cap[0])
    return [res1,res2]

##dp[i] = [x,y]： x表示第一次从i节点转发出的包数量；y表示第二次从i节点转发出的包数量 (从1开始)
def main(k,a,nums):
    dp = [[0,0]]*(k+1)
    dp[0] = [a,0]  ##初始状态输入 # 是第1个节点的前驱
    dp[1] = cal(dp[0],nums[0])  #从第一个节点输出的最小包数
    for i in range(2,k+1):
        res1 = cal(dp[i-1],nums[i-1])
        res2 = cal(dp[i-2],nums[i-1])
        dp[i] = res1 if sum(res1)<=sum(res2) else res2  ##取两次和最小
    return min(sum(dp[k]),sum(dp[k-1]))
print(main(k,a,nums))


# 1
# 30,30
# 100
# 60

# 5
# 50,50 20,20 40,10 30,5 10,5
# 100
# 20

# 2
# 50,60 30,25
# 120
# 55